package cn.lili.modules.order.fallback;

import cn.lili.common.exception.ServiceException;
import cn.lili.common.vo.PageVO;
import cn.lili.modules.distribution.entity.vos.DistributionOrderSearchParams;
import cn.lili.modules.member.entity.dos.User;
import cn.lili.modules.order.order.client.OrderClient;
import cn.lili.modules.order.order.entity.dos.Order;
import cn.lili.modules.order.order.entity.dos.OrderFlow;
import cn.lili.modules.order.order.entity.dto.OrderExportDTO;
import cn.lili.modules.order.order.entity.dto.OrderFlowDTO;
import cn.lili.modules.order.order.entity.dto.OrderSearchParams;
import cn.lili.modules.order.order.entity.vo.*;
import cn.lili.modules.system.entity.vo.Traces;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @author: ftyy
 * @date: 2022-01-13 17:21
 * @description: 订单服务 Fallback
 */
public class OrderFallback implements OrderClient {

    @Override
    public Order getBySn(String sn) {
        throw new ServiceException();
    }

    @Override
    public void systemCancel(String orderSn, String reason) {
        throw new ServiceException();
    }

    @Override
    public Double getPaymentTotal(String orderSn) {
        throw new ServiceException();
    }

    @Override
    public OrderDetailVO queryDetail(String sn) {
        throw new ServiceException();
    }

    @Override
    public List<Order> getByTradeSn(String sn) {
        throw new ServiceException();
    }

    @Override
    public List<Order> getByParentSn(String sn) {
        throw new ServiceException();
    }

    @Override
    public List<Order> queryListByParams(OrderSearchParams orderSearchParams) {
        throw new ServiceException();
    }

    @Override
    public List<Order> queryListByPromotion(
            String orderPromotionType, String payStatus, String parentOrderSn, String orderSn) {
        throw new ServiceException();
    }

    @Override
    public List<Order> queryListByPromotionId(String orderPromotionType, String payStatus, String parentOrderSn, String promotionId, String skuId) {
        throw new ServiceException();
    }

    @Override
    public long queryCountByPromotion(
            String orderPromotionType, String payStatus, String parentOrderSn, String orderSn) {
        throw new ServiceException();
    }

    @Override
    public boolean checkFictitiousOrder(String pintuanId, Integer requiredNum, Boolean fictitious) {
        throw new ServiceException();
    }

    @Override
    public void save(Order order) {
        throw new ServiceException();
    }

    @Override
    public void afterOrderConfirm(String orderSn) {
        throw new ServiceException();
    }

    /**
     * 自动成团订单处理
     *
     * @param pintuanId     拼团活动id
     * @param parentOrderSn 拼团订单sn
     */
    @Override
    public void agglomeratePintuanOrder(String pintuanId, String parentOrderSn) {
        throw new ServiceException();
    }

    @Override
    public void update(Order order) {
        throw new ServiceException();
    }

    @Override
    public Order getOne(Order order) {
        throw new ServiceException();
    }

    @Override
    public Page<OrderSimpleVO> queryByParams(OrderSearchParams orderSearchParams) {
        throw new ServiceException();
    }

    @Override
    public Page<OrderSimpleVO> distributionQuery(DistributionOrderSearchParams distributionOrderSearchParams) {
        throw new ServiceException();
    }

    @Override
    public Order delivery(String orderSn, String logisticsNo, String logisticsId) {
        throw new ServiceException();
    }

    @Override
    public Order cancel(String orderSn, String reason) {
        throw new ServiceException();
    }

    @Override
    public void getBatchDeliverList(HttpServletResponse response, List<String> logisticsName) {
        throw new ServiceException();
    }

    @Override
    public void batchDeliver(MultipartFile files) {
        throw new ServiceException();
    }

    @Override
    public List<OrderExportDTO> queryExportOrder(OrderSearchParams orderSearchParams) {
        throw new ServiceException();
    }

    @Override
    public Traces getTraces(String orderSn) {
        throw new ServiceException();
    }

    @Override
    public Map<String, Long> pendingPaymentOrderNum(String supplierId) {
        throw new ServiceException();
    }

    @Override
    public void everyDayTask() {
        throw new ServiceException();
    }

    @Override
    public List<OrderFlow> orderFlowList(String orderSn) {
        throw new ServiceException();
    }

    @Override
    public Map<String, Object> getSumPrice() {
        throw new ServiceException();
    }

    @Override
    public Long getCountByBuyerId(String buyerId) {
        throw new ServiceException();
    }

    @Override
    public Double getMoneyByUid(String uid) {
        throw new ServiceException();
    }

    @Override
    public Double getShopkeeperMoneyByUid(String uid) {
        throw new ServiceException();
    }

    @Override
    public Map<String, OrderFlow> selectSubUserFlowPrice(Map<String, List<String>> map) {
        throw new ServiceException();
    }

    @Override
    public List<OrderFlow> computeMoney(List<String> userIdList) {
        throw new ServiceException();
    }

    @Override
    public Map<String, Integer> selectCountOrderByUserIds(List<String> userIdList,  String parentId) {
        throw new ServiceException();
    }

    @Override
    public Double getMonthUnionGreenScoreByAreaId(String areaId) {
        throw new ServiceException();
    }

    @Override
    public OrderVO todayOrderForUnion(String province, String city) {
        throw new ServiceException();
    }

    @Override
    public OrderVO todayOrderForUnionV2(List<String> buyerIdList) {
        throw new ServiceException();
    }

    @Override
    public Page<OrderVO> getOrderForUnionByPageV2(List<String> buyerIdList, Integer pageNo, Integer pageSize) {
        throw new ServiceException();
    }

//    @Override
//    public Page<OrderVO> topOrdersForUnion(String province, String city, Integer pageNo, Integer pageSize) {
//        throw new ServiceException();
//    }

    @Override
    public Page<OrderFlowDTO> getCurrentMonthByUnionMember(UnionOrderParams params) {
        throw new ServiceException();
    }

    @Override
    public PerformanceDetailVO getCurrentMonthStatisticsByMember(UnionOrderParams params) {
        throw new ServiceException();
    }

    @Override
    public Page<OrderFlowDTO> getLastMonthByUnionMember(UnionOrderParams params) {
        throw new ServiceException();
    }

    @Override
    public PerformanceDetailVO getLastMonthStatisticsByMember(UnionOrderParams params) {
        throw new ServiceException();
    }

    @Override
    public Page<OrderFlow> getUnionMoneyDetail(UnionOrderParams params) {
        throw new ServiceException();
    }

    @Override
    public PerformanceDetailVO getUnionMoneyStatisticsDetail(UnionOrderParams params) {
        throw new ServiceException();
    }

    @Override
    public PerformanceDetailVO getCurrentMonthUnionOrderCountByUnion(String areaId) {
        throw new ServiceException();
    }

    @Override
    public PerformanceDetailVO getLastMonthUnionOrderByUnion(String areaId) {
        throw new ServiceException();
    }

    @Override
    public void executeCityDistributionLastMonthOrder() {
        throw new ServiceException();
    }

    @Override
    public void executeCityDistributionComissLastMonthOrder() {
        throw new ServiceException();
    }

    @Override
    public Double getCurrentMonthMoneyByMemberId(String memberId) {
        throw new ServiceException();
    }

    @Override
    public Double getLastMonthMoneyByMemberId(String memberId) {
        throw new ServiceException();
    }

    @Override
    public void executeUnionGreenScoreLastMonthOrder() {
        throw new ServiceException();
    }

    @Override
    public Page<UnionMonthFundsVO> getUnionCommissByMonth(UnionOrderParams params) {
        throw new ServiceException();
    }

    @Override
    public boolean updateProfitSharingOrderFlow(String orderSn) {
        throw new ServiceException();
    }

    @Override
    public boolean addOrderFlowProfitSharing(String orderSn, String error) {
        throw new ServiceException();
    }

    @Override
    public Map<String, Double> selectCurrentConsumptionByUserIds(List<String> userIdList, String parentId) {
        throw new ServiceException();
    }

    @Override
    public Map<String, Double> selectCumulativeConsumptionByUserIds(List<String> userIdList, String parentId) {
        throw new ServiceException();
    }

    @Override
    public Boolean complete(String orderNo) {
        throw new ServiceException();
    }
}
